Current graphics data processing is exemplified by systems and methods developed to perform a specific operation on several graphics data elements, e.g., linear interpolation, tessellation, texture mapping, depth testing. Computation units are connected in a “shading pipeline” to perform shading operations and produce shaded fragment. In a conventional shading pipeline a position within an image that is represented as a pair of coordinates, e.g., (x,y), is specified for each fragment formed by the intersection of a pixel and a primitive. Each shaded fragment is stored in a frame buffer at the location specified by the position.
FIG. 1A is a prior art Output Buffer 130 including a Pixel 135 within a Primitive 125. Primitive 125 is defined by vertices, a Vertex 141, a Vertex 142, and a Vertex 143. A position, specified as a pair of (x,y) coordinates, is computed for a fragment within Pixel 135 during rasterization of Primitive 125. The fragment is shaded by the shading pipeline and the shaded fragment is stored in Output Buffer 130 at a location corresponding to the position. In order to control what is stored in Output Buffer 130 for a specific position to perform image-based warping or reprojection, Primitive 125 is tessellated to generate a very dense mesh such that each vertex in the mesh maps to a pixel in Output Buffer 130.
FIG. 1B is a prior art highly tessellated Primitive 125 where each pixel, such as Pixel 135, includes a vertex, such as a Vertex 145. Each vertex (and pixel) may be controlled using a vertex program, for example to control the position corresponding to a shaded fragment within the pixel to perform image-based warping or reprojection. Rather than tessellating a primitive, such as Primitive 125, to control the position corresponding to a shaded fragment within the primitive, it is desirable to control the position of a fragment without tessellating the primitive.